package hashtable;

import java.util.HashMap;
import java.util.Map;

public class 回旋镖的数量_447{
            public int numberOfBoomerangs(int[][] points) {
                if(points.length == 0) return 0;
                int res = 0;
                //对每个点 求其他点到自身的距离平方  不用开方
                for(int i = 0; i< points.length; i++) {
                    Map<Integer,Integer> distanceCnt = new HashMap<>();
                    for(int j = 0; j < points.length; j++) {
                        if(i == j) continue;
                        Integer dis = distance(points, i, j);
                        distanceCnt.put(dis, distanceCnt.getOrDefault(dis, 0) + 1);
                    }
                    for(Integer dis : distanceCnt.values()) {
                        res += dis * (dis - 1);   // 组合公式   Cn = n * (n - 1)/2; 这里是因为要要考虑顺序    abc  和 cba 是两种回旋镖  因此乘以2
                    }
                }

                return res;
            }

            private Integer distance(int[][] points, int i, int j) {
                return (points[i][0] - points[j][0]) * (points[i][0] - points[j][0]) + (points[i][1] - points[j][1]) * (points[i][1] - points[j][1]);
            }
        }
